import { createRouter, createWebHashHistory } from 'vue-router'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken, setToken, setExpiresIn } from '@/utils/auth'

const routes = [
    {
        name: 'login',
        path: '/login',
        component: () => import('@/view/login.vue') // 确保这个路径和组件名称正确
    },
    {
        name: 'main',
        path: '/',
        component: () => import('@/view/main.vue')
    },
    {
        name: 'index',
        path: '/index',
        component: () => import('@/view/index.vue')
    },
    {
        name: 'prview',
        path: '/prview',
        component: () => import('@/view/prview.vue')
    },
    {
        name: 'mainView',
        path: '/mainView',
        component: () => import('@/view/mainView.vue')
    },
    {
        name: 'shearer',
        path: '/shearer',
        component: () => import('@/view/shearer.vue')
    },
    {
        name: 'water',
        path: '/water',
        component: () => import('@/view/water/index.vue')
    },
];

const router = createRouter({
    history: createWebHashHistory(), // 路由模式
    routes
})

router.beforeEach((to, from, next) => {
    NProgress.start()
    const token = getToken()
    const urlToken = getURLParameter("token") // 获取 URL 中的 token 参数
    const tId = getURLParameter("tId") || to.query.tId // 获取 URL 中的 tId 参数
    
    // 如果 URL 中有 token 参数且本地没有 token，保存它
    if (urlToken && !token) {
        setToken(urlToken)
        setExpiresIn(7200) // 设置过期时间为2小时
    }
    
    // 使用 urlToken 或本地 token
    const effectiveToken = token || urlToken
    
    if (effectiveToken) {
        if (to.path === '/login') {
            // 如果访问登录页，根据是否有 tId 跳转
            if (tId) {
                next({ path: '/prview', query: { tId } })
            } else {
                next({ path: '/' })
            }
            NProgress.done()
        } else {
            // 如果已登录且访问的不是登录页，根据 tId 判断跳转
            if (tId && to.path !== '/prview') {
                next({ path: '/prview', query: { tId } })
            } else {
                next() // 继续导航
            }
        }
    } else {
        if (to.path !== '/login') {
            if (urlToken) // 路径自带token
            {
                // 如果有 token 参数，根据 tId 决定跳转
                if (tId) {
                    next({ path: '/prview', query: { tId } })
                } else {
                    next({ path: '/' })
                }
            }
            else {
                next({ path: '/login' })
            }
            NProgress.done()
        } else {
            next() // 继续导航
        }
    }
})

router.afterEach(() => {
    NProgress.done() // 完成进度条
})
function getURLParameter(name) {
    console.log(window.location, "window.location.search");
    
    // 1. 优先从 hash 中获取参数（如 #/prview?tId=123）
    if (window.location.hash && window.location.hash.includes("?")) {
        const hashQueryParams = new URLSearchParams(
            window.location.hash.split("?")[1]
        );
        const value = hashQueryParams.get(name);
        if (value) return value;
    }
    
    // 2. 从 URL 的查询参数中获取（如 ?token=xxx）
    const urlQueryParams = new URLSearchParams(window.location.search);
    return urlQueryParams.get(name);
}
export default router
